package service;

import java.io.File;
import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import controller.Vo.GroupUserVo;
import controller.Vo.TaskUsersVo;
import controller.Vo.UserInfromVo;
import controller.Vo.UserTaskVo;
import entity.Group;
import entity.User;

public interface NoteService {
	 User selectUserByUserName(String username,String password);
	 
	 /**
	  * 添加组以及组内成员
	  * @param groupName 组名
	  * @param userIds 组成员id
	  * @param createUserId 创建者id
	  * @return 组信息
	  */
	 Group addGroup(String groupName,int[] userIds,int createUserId);
	 
	 /**
	  * 选择某个组所有成员
	  * @param groupId 组id
	  */
	 List<User> selectCurrentGroupMembers(Integer groupId);
	 
	 /**
	  * 更新某个组成员
	  * @param groupId 组id
	  * @param userIds 组成员id
	  */
	 void updateGroupMembers(Integer groupId,int[] userIds);
	 
	 /**
	  * 显示每个组成员与未分组的成员
	  */
	 List<GroupUserVo> showAllContacts();
	 
	 /**
	  * 创建事务，显示选择的接收人
	  */
	 List<User> getChooseUsers(int[] ids);
	 
	 /**
	  * 查询当前登陆者所在的团队信息
	  */
	 List<GroupUserVo> showJoinGroups(User user);
	 
	 /**
	  * 查询用户未完成的任务
	  */
	 List<UserTaskVo> showNoFinishedTasks(User user);
	 
	 /**
	  * 查询用户已完成事务
	  */
	 List<UserTaskVo> showFinishedTasks(User user);
	 
	 /**
	  * 用户确认完成任务
	  */
	 void finishTask(Integer taskId,User user);
	 
	 /**
	  * 查询所有组内通知
	  * @param groupId
	  * @return
	  */
	 List<UserInfromVo> showGroupInforms(Integer groupId);
	 
	 /**
	  * 添加通知
	  */
	 void addInform(Integer groupId,String informContent,User user);
	 
	 /**
	  * 指派任务
	  */
	 void saveTask(Integer groupId,String taskName,String taskContent,int[] userIds,String endTime,User createUser);
	 
	 /**
	  * 查询组内的共享文件
	  */
	 List<String> getGroupFiles(Integer groupId);
	 
	 /**
	  * 下载文件
	  */
	 File downloadGroupFile(Integer groupId,String fileName);
	 
	 /**
	  * 上传文件
	  */
	 void uploadGroupFile(Integer groupId,MultipartFile[] groupFiles);
	 
	 /**
	  * 查询任务进度情况	
	  */
	 List<TaskUsersVo> getTaskStatus(User user, Integer groupId);
}
